/*
 * Copyright (c) 2016  西咸新区大数据信息技术服务有限公司版权所有.
 */

package com.otherTest.other;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Random;
import java.util.UUID;

/**
 * 字符串常用功能
 * Created by jz on 2016/09/03
 */
@SuppressWarnings({"all"})
public class StringUtil {

    /**
     * 判断字符串是否为空
     *
     * @param str 源字符串
     * @return true 为空,false 不为空
     */
    public static boolean isEmpty(String str) {
        return str == null || str.trim().isEmpty() || "null".equals(str);
    }

    /**
     * 判断字符串是否不为空
     *
     * @param str 源字符串
     * @return true 不为空,false 为空
     */
    public static boolean isNotEmpty(String str) {
        return !(str == null || str.trim().isEmpty() || "null".equals(str));
    }

    /**
     * 生成一个唯一的id（UUID）32位
     *
     * @return 32位唯一字符串
     */
    public static String getUUID() {
        return UUID.randomUUID().toString().trim().replaceAll("-", "");
    }


    /**
     * 获取随机字符串
     *
     * @param length 生成字符串的长度
     * @return 随机字符串
     */
    public static String getRandomStr(int length) {
        String base = "abcdefghijklmnopqrstuvwxyz0123456789";
        Random random = new Random();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < length; i++) {
            int number = random.nextInt(base.length());
            sb.append(base.charAt(number));
        }
        return sb.toString();
    }

    /**
     * 字符串列表转字符串
     *
     * @param strList   字符串列表
     * @param separator 分隔符
     * @return 生成的字符串
     */
    public static String toString(List<String> strList, String separator) {
        StringBuffer sb = new StringBuffer("");
        if (strList != null && !strList.isEmpty()) {
            for (String str : strList) {
                sb.append(separator);
                sb.append(str);
            }
        }
        return sb.toString().substring(1);
    }


    /**
     * 判断字符串是否是整数
     *
     * @param value 源字符串
     * @return true：是，false：否
     */
    public static boolean isInteger(String value) {
        try {
            Integer.parseInt(value);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }

    /**
     * 判断字符串是否是浮点数
     *
     * @param value 源字符串
     * @return true：是，false：否
     */
    public static boolean isDouble(String value) {
        try {
            Double.parseDouble(value);
            if (value.contains("."))
                return true;
            return false;
        } catch (NumberFormatException e) {
            return false;
        }
    }

    /**
     * 判断字符串是否是数字
     *
     * @param value 源字符串
     * @return true：是，false：否
     */
    public static boolean isNumber(String value) {
        return isInteger(value) || isDouble(value);
    }


    /**
     * 流转字符串
     *
     * @param is 输入流
     * @return 从流中获取到的值
     * @throws IOException
     */
    public static String inputStreamToString(InputStream is) throws IOException {
        StringBuffer sb = new StringBuffer();
        byte[] b = new byte[2048];
        for (int n; (n = is.read(b)) != -1; ) {
            sb.append(new String(b, 0, n));
        }
        return sb.toString();
    }
}
